home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 001a / com_and3.zip / BBS.CMD < prev    next >
OS/2 REXX Batch file  |  1989-10-03  |  22KB  |  1,300 lines

  1. SET BAUD 1200
  2. SET PARITY NONE
  3. SET DATA 8
  4. SET STOP 1
  5. SET PORT COM2
  6. SET MASK ON
  7. SET ASCII UP_LF LF
  8. S2 = "\BBS"
  9. S3 = "\BBS\FILES"
  10. S4 = "\BBS\MAIL"
  11. S5 = "\BBS\BULLETIN"
  12. SET ALARM OFF
  13. SET ATIME 1
  14. CHDIR S2
  15. SET DLDIR S3
  16. LEGEND "Scripted BBS mode.  Press ESC to terminate or to CHAT."
  17. TRANSMIT "~~~+++~~~ATZ^M"
  18. ON ESCAPE GOSUB Chat
  19. CLOG "* BBS script loaded"
  20. GOTO Restart
  21. Chat:
  22. MESS "^M^JDo you wish to terminate? (Y/N) "
  23. GET S0 2
  24. IF FIND S0 "Y"
  25. HANGUP
  26. CLOG "* BBS script terminated"
  27. EXIT
  28. ENDIF
  29. IF NOT FLAG(3)
  30. RETURN
  31. ENDIF
  32. MESS "^M^JDo you wish to chat with the caller (Y/N) "
  33. GET S0 2
  34. IF FIND S0 "N"
  35. RETURN
  36. ENDIF
  37. TRAN "^M^J"
  38. TRAN "^M^JOperator initiated chat mode..."
  39. Chat_Loop:
  40. MESS "^M^JSYSOP: "
  41. GET S0 80
  42. IF NULL S0
  43. MESS "Continue? (Y/N) "
  44. GET S0 2
  45. IF FIND S0 "N"
  46. TRAN "^M^JChat terminated by SYSOP"
  47. RETURN
  48. ENDIF
  49. S0 = " "
  50. ENDIF
  51. TRAN "^M^JSYSOP: "
  52. TRAN S0
  53. MESS "Caller: "
  54. TRAN "^M^JCaller: "
  55. GOSUB Read_Comm
  56. IF FLAG(0)
  57. MESS "^M^JCaller disconnected"
  58. RETURN
  59. ENDIF
  60. GOTO Chat_Loop
  61. Limit_Time:
  62. IF FLAG(1)
  63. SET FLAG(0) OFF
  64. RETURN
  65. ENDIF
  66. TIME S9 1
  67. N19 = S9(0:1)*60+S9(3:4)
  68. N18 = S6(0:1)*60+S6(3:4)
  69. IF GT N18 N19
  70. N19 = N19+1440
  71. ENDIF
  72. N19 = N19-N18
  73. IF GT N19 N0
  74. TRAN "^M^JYour alotted time has expired..."
  75. TRAN "^M^JYou are being disconnected."
  76. SET FLAG(0) ON
  77. RETURN
  78. ENDIF
  79. SET FLAG(0) OFF
  80. RETURN
  81. Read_Comm:
  82. IF FLAG(3)
  83. GOSUB Limit_Time
  84. IF FLAG(0)
  85. RETURN
  86. ENDIF
  87. ENDIF
  88. RGET S9 80 180
  89. IF NOT CONNECTED
  90. GOTO Disconnect
  91. ENDIF
  92. IF NOT SUCCESS
  93. GOTO Timeout
  94. ENDIF
  95. FIND S9 "NO CARRIER"
  96. IF FOUND
  97. GOTO Disconnect
  98. ENDIF
  99. SET FLAG(0) OFF
  100. RETURN
  101. Timeout:
  102. TRAN "^M^J... autodisconnect due to timeout^M^J"
  103. MESSAGE "^M... autodisconnect due to timeout"
  104. GOTO RComm_Exit
  105. Disconnect:
  106. MESSAGE  "^MCaller disconnected"
  107. RComm_Exit:
  108. SET FLAG(0) ON
  109. RETURN
  110. Display_Limit:
  111. IF FLAG(1)
  112. RETURN
  113. ENDIF
  114. TIME S9 1
  115. N19 = S9(0:1)*60+S9(3:4)
  116. N18 = S6(0:1)*60+S6(3:4)
  117. IF GT N18 N19
  118. N19 = N19+1440
  119. ENDIF
  120. N19 = N0-(N19-N18)
  121. STRFMT S9 "^M^J(%d minutes remaining)" N19
  122. TRAN S9
  123. RETURN
  124. Logon:
  125. FOPENI "BBS-User" TEXT
  126. IF NOT SUCCESS
  127. SET FLAG(0) ON
  128. RETURN
  129. ENDIF
  130. Logon_Loop:
  131. READ S9 80 N19
  132. IF EOF
  133. FCLOSEI
  134. SET FLAG(0) ON
  135. RETURN
  136. ENDIF
  137. FIND S9(0:0) "<"
  138. IF FOUND
  139. GOTO Logon_Loop
  140. ENDIF
  141. SWITCH S1
  142. CASE S9(0:15)
  143. GOTO Logon_OK
  144. ENDCASE
  145. ENDSWITCH
  146. GOTO Logon_Loop
  147. Logon_OK:
  148. SET FLAG(1) OFF
  149. SET FLAG(3) ON
  150. N0 = 60
  151. FIND S9(16:16) "P"
  152. IF FOUND
  153. SET FLAG(1) ON
  154. N0 = 3000
  155. ENDIF
  156. TIME S6 1
  157. FCLOSEI
  158. SET FLAG(0) OFF
  159. RETURN
  160. Disp_File:
  161. ISFILE S8
  162. IF NOT SUCCESS
  163. TRAN S9
  164. RETURN
  165. ENDIF
  166. TRAN "^M^J"
  167. SENDFILE ASCII S8
  168. TRAN "^M^J"
  169. RETURN
  170. Left_Justify:
  171. LENGTH S9 N19
  172. LJ_Loop:
  173. IF NOT NULL S9(0:0)
  174. RETURN
  175. ENDIF
  176. S9 = S9(1:79)
  177. DEC N19
  178. IF GT N19 0
  179. GOTO LJ_Loop
  180. ENDIF
  181. RETURN
  182. Log_Item:
  183. FOPENO "BBS-LOG" TEXT APPEND
  184. IF NOT SUCCESS
  185. RETURN
  186. ENDIF
  187. DATE S8
  188. CONCAT S9(59) S8
  189. TIME S8 1
  190. CONCAT S9(70) S8
  191. WRITE S9
  192. WRITE "^M"
  193. FCLOSEO
  194. RETURN
  195. Copy_Text:
  196. N19 = 0
  197. Copy_Loop:
  198. INC N19
  199. S9 = N19 & ":  ^H"
  200. TRAN S9
  201. GOSUB Read_Comm
  202. IF FLAG(0)
  203. RETURN
  204. ENDIF
  205. LENGTH S9 N18
  206. IF NOT ZERO N18
  207. PRESERVE S9
  208. WRITE S9
  209. IF NOT SUCCESS
  210. TRAN "Error recording text - please try later^M^J"
  211. RETURN
  212. ENDIF
  213. WRITE  "!"
  214. GOTO Copy_Loop
  215. ELSE
  216. TRAN "^M^JComplete? (Y/N) "
  217. GOSUB Read_Comm
  218. IF FLAG(0)
  219. RETURN
  220. ENDIF
  221. IF NOT FIND S9 "Y"
  222. WRITE "!"
  223. GOTO Copy_Loop
  224. ENDIF
  225. ENDIF
  226. RETURN
  227. Restart:
  228. CHDIR S2
  229. SET RECHO OFF
  230. SET RDISP ON
  231. CLEAR
  232. LOCATE 0,0
  233. SET FLAG(1) OFF
  234. SET FLAG(2) OFF
  235. SET FLAG(3) OFF
  236. MESSAGE "^MWaiting..."
  237. Pause 3
  238. HANGUP
  239. PAUSE 3
  240. TRANSMIT "ATE0Q0V1X1S0=2 S7=30 S9=10^M"
  241. Wait_Connect:
  242. RGET S9 80 180
  243. IF NOT SUCCESS
  244. GOTO Wait_Connect
  245. ENDIF
  246. FIND S9 "NO CARRIER"
  247. IF FOUND
  248. GOTO Restart
  249. ENDIF
  250. FIND S9 "CONNECT"
  251. IF NOT FOUND
  252. GOTO Wait_Connect
  253. ENDIF
  254. GOSUB AutoBaud
  255. S9 = "^M^JThe Flying Scotsman greets you!! ^M^J"
  256. S8 = "BBS-Welc"
  257. GOSUB Disp_File
  258. SET RECHO ON
  259. N10 = 0
  260. ID_Query:
  261. TRANSMIT "^MEnter your ID (or enter GUEST): "
  262. GOSUB Read_Comm
  263. IF FLAG(0)
  264. GOTO Exit
  265. ENDIF
  266. IF NULL S9
  267. GOTO ID_Query
  268. ENDIF
  269. SWITCH S9
  270. CASE "GUEST"
  271. GOSUB Register
  272. GOTO Exit
  273. ENDCASE
  274. ENDSWITCH
  275. S1 = S9(0:7)
  276. UPPER S1
  277. Password_Query:
  278. TRANSMIT "^MEnter your password: "
  279. SET RECHO OFF
  280. SET RDISPLAY OFF
  281. GOSUB Read_Comm
  282. IF FLAG(0)
  283. GOTO Exit
  284. ENDIF
  285. SET RECHO ON
  286. SET RDISPLAY ON
  287. IF NULL S9
  288. GOTO Password_Query
  289. ENDIF
  290. S1(8:79) = S9(0:7)
  291. GOSUB Logon
  292. IF NOT FLAG(0)
  293. S9 = "Logon: "
  294. CONCAT S9(7) S1(0:7)
  295. GOSUB Log_Item
  296. SET FLAG(2) OFF
  297. S1 = S1(0:7)
  298. CLOG "* BBS logon: "*S1
  299. GOTO Main_Prompt
  300. ENDIF
  301. TRAN "Unrecognized ID/Password^M^J"
  302. INC N10
  303. IF GE N10 3
  304.            TRAN "You have exceeded the number of tries allowed for logon^M^JBye...^M^J"
  305. MESS "^M^JLogon attempts failed^M^J"
  306. GOTO Exit
  307. ENDIF
  308. GOTO ID_Query
  309. Main_Prompt:
  310. MESS "^M^JMain prompt "
  311. GOSUB Display_Limit
  312. IF NOT FLAG(1)
  313. S9 = "^M^JC)omment, B)ulletins, M)ail, F)iles, A)larm or E)xit: "
  314. S8 = "BBS-NpMn"
  315. ELSE
  316.            S9 = "^M^JP)rivileged, C)omment, B)ulletins, M)ail, F)iles, A)larm or E)xit: "
  317. S8 = "BBS-PrMn"
  318. ENDIF
  319. GOSUB Disp_File
  320. GOSUB Read_Comm
  321. IF FLAG(0)
  322. GOTO Exit
  323. ENDIF
  324. GOSUB Left_Justify
  325. S9 = S9(0:0)
  326. SWITCH S9
  327. CASE "A"
  328. GOTO Alarm
  329. ENDCASE
  330. CASE "M"
  331. GOTO Mail_Command
  332. ENDCASE
  333. CASE "F"
  334. GOTO File_Command
  335. ENDCASE
  336. CASE "C"
  337. GOTO Comment
  338. ENDCASE
  339. CASE "B"
  340. GOTO Bull_Command
  341. ENDCASE
  342. CASE "E"
  343. TRAN "Ok... bye"
  344. GOTO EXIT
  345. ENDCASE
  346. CASE "P"
  347. IF FLAG(1)
  348. GOTO Priv_Prompt
  349. ENDIF
  350. ENDCASE
  351. ENDSWITCH
  352. TRAN "^MCommand not recognized... try again^M"
  353. GOTO Main_Prompt
  354. EXIT:
  355. MESS "^G"
  356. CLOG "* BBS logoff"
  357. GOTO Restart
  358. Alarm:
  359. SOUND 440 500
  360. SOUND 493 100
  361. SOUND 554 100
  362. SOUND 587 100
  363. SOUND 659 100
  364. SOUND 739 100
  365. SOUND 830 100
  366. SOUND 880 500
  367. GOTO Main_Prompt
  368. Priv_Prompt:
  369. MESS "^M^JPrivilege prompt "
  370. GOSUB Display_Limit
  371. S9 = "^M^JL)ist, P)ath, S)ubdir, D)OS, M)ain or E)xit: "
  372. S8 = "BBS-PPMn"
  373. GOSUB Disp_File
  374. GOSUB Read_Comm
  375. IF FLAG(0)
  376. GOTO Exit
  377. ENDIF
  378. GOSUB Left_Justify
  379. S9 = S9(0:0)
  380. SWITCH S9
  381. CASE "L"
  382. GOTO DIR
  383. ENDCASE
  384. CASE "S"
  385. GOTO CHDIR
  386. ENDCASE
  387. CASE "P"
  388. GOTO PATHLIST
  389. ENDCASE
  390. CASE "D"
  391. GOTO Shell
  392. ENDCASE
  393. CASE "M"
  394. GOTO Main_Prompt
  395. ENDCASE
  396. CASE "E"
  397. TRAN "Ok... bye"
  398. GOTO EXIT
  399. ENDCASE
  400. ENDSWITCH
  401. TRAN "^MCommand not recognized... try again^M"
  402. GOTO Priv_Prompt
  403. CHDIR:
  404. MESS "^M^JCHDIR Command "
  405. TRAN "^MEnter the drive:subdirectory: "
  406. GOSUB Read_Comm
  407. IF FLAG(0)
  408. GOTO Exit
  409. ENDIF
  410. IF NOT NULL S9
  411. CHDIR S9
  412. SET FLAG(2) ON
  413. ENDIF
  414. GOTO Priv_Prompt
  415. PATHLIST:
  416. MESS "^M^JPathlist command "
  417. TRAN "^M Working..."
  418. DOS "TREED >\HOSTTEMP.TXT"
  419. TRAN "^MUse control-S to suspend, control-Q to continue^M"
  420. SENDFILE ASCII "\HOSTTEMP.TXT"
  421. TRAN "^M"
  422. DELETE "\HOSTTEMP.TXT"
  423. GOTO Priv_Prompt
  424. Shell:
  425. MESS "^M^JDOS Command "
  426. TRAN "^MWarning: this command may be used to invoke ANY COMMAND that"
  427. TRAN "^MDOS can execute.  If you load a program requiring keyboard  "
  428. TRAN "^Mentry, you lock yourself out and leave the board unusable."
  429. TRAN "^M^J"
  430. TRAN "^MEnter your command: "
  431. GOSUB Read_Comm
  432. IF FLAG(0)
  433. GOTO Exit
  434. ENDIF
  435. IF NULL S9
  436. GOTO Priv_Prompt
  437. ENDIF
  438. IF FIND S9 "FORMAT"
  439. TRAN "^M^JFormat commands are not allowed..."
  440. GOTO Priv_Prompt
  441. ENDIF
  442. TRAN "^M Working..."
  443. CONCAT S9 ">\HOSTTEMP.TXT"
  444. DOS   S9
  445. TRAN "^MUse control-S to suspend, control-Q to continue^M"
  446. SENDFILE ASCII "\HOSTTEMP.TXT"
  447. TRAN "^M"
  448. DELETE "\HOSTTEMP.TXT"
  449. GOTO Priv_Prompt
  450. Dir:
  451. MESS "^M^JDirectory command "
  452. TRAN "^M Working..."
  453. DOS "DIR >\HOSTTEMP.TXT"
  454. TRAN "^MUse control-S to suspend, control-Q to continue^M"
  455. SENDFILE ASCII "\HOSTTEMP.TXT"
  456. TRAN "^M"
  457. DELETE "\HOSTTEMP.TXT"
  458. GOTO Priv_Prompt
  459. File_Command:
  460. MESS "^M^JFile prompt "
  461. SUBDIR S19
  462. CHDIR S3
  463. File_Prompt:
  464. GOSUB Display_Limit
  465. S9 = "^ML)ist, S)earch, U)pload, D)ownload, M)ain or E)xit: "
  466. S8 = "BBS-FiMe"
  467. GOSUB Disp_File
  468. GOSUB Read_Comm
  469. IF FLAG(0)
  470. GOTO Exit
  471. ENDIF
  472. GOSUB Left_Justify
  473. S9 = S9(0:0)
  474. SWITCH S9
  475. CASE "D"
  476. GOTO DOWNLOAD
  477. ENDCASE
  478. CASE "U"
  479. GOTO UPLOAD
  480. ENDCASE
  481. CASE "L"
  482. GOTO FILELIST
  483. ENDCASE
  484. CASE "S"
  485. GOTO Search
  486. ENDCASE
  487. CASE "M"
  488. CHDIR S19
  489. GOTO Main_Prompt
  490. ENDCASE
  491. CASE "E"
  492. TRAN "Ok... bye"
  493. GOTO EXIT
  494. ENDCASE
  495. ENDSWITCH
  496. TRAN "Invalid selection - try again^M"
  497. GOTO FILE_Prompt
  498. File_Query:
  499. MESS "^M^JFname query "
  500. TRAN "^MEnter the file name: "
  501. GOSUB Read_Comm
  502. IF FLAG(0)
  503. RETURN
  504. ENDIF
  505. RETURN
  506. UPLOAD:
  507. MESS "^M^JUpload from caller "
  508. GOSUB File_Query
  509. IF FLAG(0)
  510. GOTO EXIT
  511. ENDIF
  512. IF NULL S9
  513. GOTO File_Prompt
  514. ENDIF
  515. IF FIND S9 "\"
  516. IF NOT FLAG(1)
  517. TRAN "^MQualified file names are not permitted."
  518. GOTO UPLOAD
  519. ENDIF
  520. ENDIF
  521. IF ISDLFILE S9
  522. TRAN "^MFile already exists"
  523. GOTO UPLOAD
  524. ENDIF
  525. MESS "^M^JUlo Method prompt "
  526. TRAN "^MW)xmodem, X)modem, Y)modem (X1k), Z)modem, or K)ermit: "
  527. S8 = S9
  528. GOSUB Read_Comm
  529. IF FLAG(0)
  530. GOTO Exit
  531. ENDIF
  532. GOSUB Left_Justify
  533. S9 = S9(0:0)
  534. TIME S10 1
  535. SWITCH S9
  536. CASE "W"
  537. TRAN "^M^JBegin your transfer procedure..."
  538. GETFILE WXMODEM S8
  539. ENDCASE
  540. CASE "X"
  541. TRAN "^M^JBegin your transfer procedure..."
  542. GETFILE XMODEM S8
  543. ENDCASE
  544. CASE "Y"
  545. TRAN "^M^JBegin your transfer procedure..."
  546. GETFILE YMODEM S8
  547. ENDCASE
  548. CASE "Z"
  549. TRAN "^M^JBegin your transfer procedure..."
  550. GETFILE ZMODEM
  551. ENDCASE
  552. CASE "K"
  553. TRAN "^M^JBegin your transfer procedure..."
  554. GETFILE KERMIT
  555. ENDCASE
  556. DEFAULT
  557. TRAN "^MInvalid transfer selection"
  558. GOTO EOTransfer
  559. ENDCASE
  560. ENDSWITCH
  561. IF FIND S9 "\"
  562. GOTO EOTransfer
  563. ENDIF
  564. TIME S11 1
  565. N19 = S11(0:1)*60+S11(3:4)
  566. N18 = S10(0:1)*60+S10(3:4)
  567. IF GT N18 N19
  568. N19 = N19+1440
  569. ENDIF
  570. N0 = N0+(N19-N18)
  571. Describe:
  572. TRAN "^M^JDescription: "
  573. GOSUB Read_Comm
  574. IF FLAG(0)
  575. GOTO Exit
  576. ENDIF
  577. IF NULL S9
  578. TRAN "^M^JPlease leave something of a description"
  579. GOTO Describe
  580. ENDIF
  581. FOPENO "BBS-File"  TEXT APPEND
  582. IF NOT SUCCESS
  583. GOTO EOTransfer
  584. ENDIF
  585. DATE S0
  586. S8 = S8 & "            "
  587. FSIZE S11 S8
  588. S10 = S8(0:12) * S0(0:7) * S11(0:6) * S9
  589. LENGTH S10 N19
  590. WRITE S10 N19
  591. WRITE "!"
  592. FCLOSEO
  593. GOTO EOTransfer
  594. DOWNLOAD:
  595. MESS "^M^JDownload to caller "
  596. GOSUB File_Query
  597. IF FLAG(0)
  598. GOTO EXIT
  599. ENDIF
  600. IF NULL S9
  601. GOTO File_Prompt
  602. ENDIF
  603. IF FIND S9 "\"
  604. IF NOT FLAG(1)
  605. TRAN "^MQualified file names are not permitted."
  606. GOTO DOWNLOAD
  607. ENDIF
  608. ENDIF
  609. ISFILE S9
  610. IF NOT ISFILE S9
  611. TRAN "^MFile doesn't exist"
  612. GOTO DOWNLOAD
  613. ENDIF
  614. MESS "^M^JDlo Method prompt "
  615.         TRAN "^MW)xmodem, X)modem, Y)modem (X1k), Z)modem, K)ermit, or A)scii: "
  616. S8 = S9
  617. GOSUB Read_Comm
  618. IF FLAG(0)
  619. GOTO Exit
  620. ENDIF
  621. GOSUB Left_Justify
  622. S9 = S9(0:0)
  623. SWITCH S9
  624. CASE "A"
  625. SENDFILE ASCII S8
  626. ENDCASE
  627. CASE "W"
  628. TRAN "^M^JBegin your transfer procedure..."
  629. SENDFILE WXMODEM S8
  630. ENDCASE
  631. CASE "X"
  632. TRAN "^M^JBegin your transfer procedure..."
  633. SENDFILE XMODEM S8
  634. ENDCASE
  635. CASE "Y"
  636. TRAN "^M^JBegin your transfer procedure..."
  637. SENDFILE YMODEM S8
  638. ENDCASE
  639. CASE "Z"
  640. TRAN "^M^JBegin your transfer procedure..."
  641. SENDFILE ZMODEM S8
  642. ENDCASE
  643. CASE "K"
  644. TRAN "^M^JBegin your transfer procedure..."
  645. SENDFILE KERMIT S8
  646. ENDCASE
  647. DEFAULT
  648. TRAN "^MInvalid transfer selection"
  649. GOTO EOTransfer
  650. ENDCASE
  651. ENDSWITCH
  652. GOTO EOTransfer
  653. EOTRANSFER:
  654. IF NOT SUCCESS
  655. MESS "^M^JTransfer failed "
  656. ELSE
  657. MESS "^M^JTransfer OK "
  658. ENDIF
  659. GOTO File_Prompt
  660. Filelist:
  661. N10 = 0
  662. FOPENI "BBS-File"  TEXT
  663. IF NOT SUCCESS
  664. TRAN "^MNo files are available at this time^M"
  665. GOTO Main_Prompt
  666. ENDIF
  667. FListLoop:
  668. READ S9 80 N19
  669. IF EOF
  670. GOTO FListEnd
  671. ENDIF
  672. IF NOT FIND S9(0:0) "*"
  673. S0 = S9(0:12)
  674. ISFILE S0
  675. IF FAILURE
  676. GOTO FListLoop
  677. ENDIF
  678. ELSE
  679. GOTO FListPrint
  680. ENDIF
  681. IF ZERO N10
  682. TRAN "^M^JName        Dated    Size     Description ^M^J"
  683.            TRAN  "----------- -------- -------- ----------------------------------------------^M^J"
  684. ENDIF
  685. S9 = S9(0:12) * " " * S9(13:19) * " " * S9(21:27) * " " * S9(28:79)
  686. FListPrint:
  687. TRAN S9
  688. TRAN "^M^J"
  689. N10 = N10+1
  690. GOTO FListLoop
  691. FListEnd:
  692. FCLOSEI
  693. GOTO File_Prompt
  694. Search:
  695. TRAN "^M^JEnter the search string: "
  696. GOSUB Read_Comm
  697. IF FLAG(0)
  698. GOTO Exit
  699. ENDIF
  700. IF NULL S9
  701. TRAN "^M^JSearch aborted"
  702. GOTO File_Prompt
  703. ENDIF
  704. S18 = S9
  705. FOPENI "BBS-File"  TEXT
  706. IF NOT SUCCESS
  707. TRAN "^MNo files are available at this time^M"
  708. GOTO Main_Prompt
  709. ENDIF
  710. N10 = 0
  711. Search_Loop:
  712. READ S9 80 N19
  713. IF EOF
  714. GOTO Search_End
  715. ENDIF
  716. IF NOT FIND S9(0:0) "*"
  717. S0 = S9(0:12)
  718. ISFILE S0
  719. IF FAILURE
  720. GOTO Search_Loop
  721. ENDIF
  722. ELSE
  723. GOTO Search_Loop
  724. ENDIF
  725. IF NOT FIND S9 S18
  726. GOTO Search_Loop
  727. ENDIF
  728. IF ZERO N10
  729. TRAN "^M^JName        Dated    Size     Description ^M^J"
  730.            TRAN  "----------- -------- -------- ----------------------------------------------^M^J"
  731. ENDIF
  732. S0 = S9(0:12) * " " * S9(13:19) * " " * S9(21:27) * " " * S9(28:79)
  733. TRAN S0
  734. TRAN "^M^J"
  735. N10 = N10+1
  736. GOTO Search_Loop
  737. Search_End:
  738. IF ZERO N10
  739. TRAN "^M^JNo matches"
  740. ENDIF
  741. FCLOSEI
  742. GOTO File_Prompt
  743. Comment:
  744. SUBDIR S19
  745. CHDIR S2
  746. MESS "^M^JComment requested "
  747. S9 = "Do you wish to leave a comment? "
  748. S8 = "BBS-NoMe"
  749. GOSUB Disp_File
  750. GOSUB Read_Comm
  751. IF FLAG(0)
  752. GOTO Exit
  753. ENDIF
  754. FIND S9 "Y"
  755. IF NOT FOUND
  756. TRAN "OK"
  757. CHDIR S19
  758. GOTO Main_Prompt
  759. ENDIF
  760. FOPENO "BBS-Note" TEXT APPEND
  761. IF NOT SUCCESS
  762. TRAN "Error recording note - please try later^M^J"
  763. CHDIR S19
  764. GOTO Main_Prompt
  765. ENDIF
  766. S9 = "*** Note left by "
  767. CONCAT S9(17) S1
  768. DATE S8
  769. CONCAT S9(25) S8(0:9)
  770. TIME S8 1
  771. CONCAT S9(35) S8(0:7)
  772. WRITE S9
  773. WRITE "!"
  774.         TRAN "Each line, as you enter it will be recorded.  No edits, yet...^M^J"
  775. TRAN "Enter a line/line(s) of text.  A blank line ends the note.^M^J"
  776. GOSUB Copy_Text
  777. FCLOSEO
  778. IF FLAG(0)
  779. GOTO Exit
  780. ENDIF
  781. TRAN "Your note has been recorded - thanks^M^J"
  782. CHDIR S19
  783. GOTO Main_Prompt
  784. Bull_Command:
  785. SUBDIR S19
  786. CHDIR S5
  787. BULL_List:
  788. MESS "^M^JBulletin list "
  789. N10 = 0
  790. FOPENI "BBS-Bull"  TEXT
  791. IF NOT SUCCESS
  792. TRAN "^MNo bulletins exist^M"
  793. CHDIR S19
  794. GOTO Main_Prompt
  795. ENDIF
  796. Bull_Loop:
  797. READ S9 80 N19
  798. IF EOF
  799. GOTO Bull_Prompt
  800. ENDIF
  801. IF NOT NULL S9(13:13)
  802. IF NOT FLAG(1)
  803. GOTO BULL_Loop
  804. ENDIF
  805. ENDIF
  806. IF FIND S9(0:0) "*"
  807. GOTO Bull_Loop
  808. ENDIF
  809. S0 = S9(14:25)
  810. ISFILE S0
  811. IF FAILURE
  812. GOTO Bull_Loop
  813. ENDIF
  814. IF ZERO N10
  815. TRAN "^M^JNum   Dated    Subject     ^M^J"
  816.            TRAN  "----- -------- --------------------------------------------------------------^M^J"
  817. ENDIF
  818. S0 = S9(0:4)*" "*S9(5:12)*" "*S9(26:79)
  819. TRAN S0
  820. TRAN "^M^J"
  821. N10 = N10+1
  822. GOTO Bull_Loop
  823. Bull_Prompt:
  824. FCLOSEI
  825. GOSUB Display_Limit
  826. S9 = "^ML)ist, M)ain, E)xit, or a bulletin number: "
  827. S8 = "BBS-BuMe"
  828. GOSUB Disp_File
  829. GOSUB Read_Comm
  830. IF FLAG(0)
  831. GOTO Exit
  832. ENDIF
  833. GOSUB Left_Justify
  834. IF FIND S9(0:0) "L"
  835. GOTO Bull_List
  836. ENDIF
  837. IF FIND S9(0:0) "M"
  838. CHDIR S19
  839. GOTO Main_Prompt
  840. ENDIF
  841. IF FIND S9(0:0) "E"
  842. TRAN "Ok... bye"
  843. GOTO Exit
  844. ENDIF
  845. FOPENI "BBS-Bull"  TEXT
  846. IF NOT SUCCESS
  847. TRAN "^MNo bulletins available^M"
  848. CHDIR S19
  849. GOTO Main_Prompt
  850. ENDIF
  851. S0 = S9
  852. Bull_Scan:
  853. READ S9 80 N19
  854. IF EOF
  855. TRAN "^M^JNo such bulletin!! ^M^J"
  856. FCLOSEI
  857. GOTO Bull_Prompt
  858. ENDIF
  859. IF FIND S9(0:0) "*"
  860. GOTO Bull_Scan
  861. ENDIF
  862. IF NOT NULL S9(13:13)
  863. IF NOT FLAG(1)
  864. GOTO BULL_Scan
  865. ENDIF
  866. ENDIF
  867. S8 = S9(14:25)
  868. ISFILE S8
  869. IF FAILURE
  870. GOTO Bull_Scan
  871. ENDIF
  872. S9 = S9(0:4)
  873. GOSUB Left_Justify
  874. SWITCH S9
  875. CASE S0(0:4)
  876. GOTO Bull_Read
  877. ENDCASE
  878. ENDSWITCH
  879. GOTO Bull_Scan
  880. Bull_Read:
  881. FCLOSEI
  882. MESS "^M^JReading bulletin "
  883. S9 = "^MError opening Bltnfile"
  884. GOSUB Disp_File
  885. GOTO Bull_Prompt
  886. Mail_Command:
  887. MESS "^M^JMail prompt "
  888. SUBDIR S19
  889. CHDIR S4
  890. Mail_Prompt:
  891. GOSUB Display_Limit
  892. S9 = "^MS)can, L)ist, R)ead, W)rite, M)ain or E)xit: "
  893. S8 = "BBS-MeMe"
  894. GOSUB Disp_File
  895. GOSUB Read_Comm
  896. IF FLAG(0)
  897. GOTO Exit
  898. ENDIF
  899. GOSUB Left_Justify
  900. S9 = S9(0:0)
  901. SWITCH S9
  902. CASE "R"
  903. GOTO Read_Msg
  904. ENDCASE
  905. CASE "W"
  906. GOTO Write_msg
  907. ENDCASE
  908. CASE "S"
  909. GOTO Scan_Msg
  910. ENDCASE
  911. CASE "L"
  912. GOTO List_Msg
  913. ENDCASE
  914. CASE "M"
  915. CHDIR S19
  916. GOTO Main_Prompt
  917. ENDCASE
  918. CASE "E"
  919. TRAN "Ok... bye"
  920. GOTO Exit
  921. ENDCASE
  922. ENDSWITCH
  923. TRAN "Invalid selection - try again^M"
  924. GOTO Mail_Prompt
  925. Scan_Msg:
  926. N10 = 0
  927. N11 = 0
  928. FOPENI "BBS-Mail"  TEXT
  929. IF NOT SUCCESS
  930. GOTO Scan_Rpt
  931. ENDIF
  932. TRAN "^M Working "
  933. Scan_Loop:
  934. READ S9 80 N19
  935. IF EOF
  936. GOTO Scan_Rpt
  937. ENDIF
  938. S0 = S9(0:7)
  939. SWITCH S0
  940. CASE S1
  941. S0 = S9(25:37)
  942. ISFILE S0
  943. IF SUCCESS
  944. INC N11
  945. ENDIF
  946. ENDCASE
  947. ENDSWITCH
  948. INC N10
  949. N12 = N10/10*10
  950. IF EQ N10 N12
  951. TRAN "."
  952. ENDIF
  953. GOTO Scan_Loop
  954. Scan_Rpt:
  955. IF ZERO N11
  956. TRAN "^MYou have no messages waiting"
  957. ELSE
  958. STRFMT S0 "^MYou have %d message(s) waiting." N11
  959. TRAN S0
  960. ENDIF
  961. FCLOSEI
  962. GOTO Mail_Prompt
  963. List_Msg:
  964. N10 = 0
  965. FOPENI "BBS-Mail"  TEXT
  966. IF NOT SUCCESS
  967. TRAN "^MNo mail exists - why not write something?^M"
  968. GOTO Mail_Prompt
  969. ENDIF
  970. List_Loop:
  971. READ S9 80 N19
  972. IF EOF
  973. GOTO List_End
  974. ENDIF
  975. S0 = S9(0:7)
  976. SWITCH S0
  977. CASE S1
  978. ENDCASE
  979. DEFAULT
  980. IF FIND S9(16:16) "P"
  981. GOTO List_Loop
  982. ENDIF
  983. ENDCASE
  984. ENDSWITCH
  985. S0 = S9(25:37)
  986. ISFILE S0
  987. IF FAILURE
  988. GOTO List_Loop
  989. ENDIF
  990. IF ZERO N10
  991. TRAN "^M^JTo       From     Date     Subject^M^J"
  992.            TRAN  "-------- -------- -------- --------------------------------------------------------------^M^J"
  993. ENDIF
  994. S0 = S9(0:7)*" "*S9(8:15)*" "*S9(17:24)*" "*S9(38:79)
  995. TRAN S0
  996. TRAN "^M^J"
  997. N10 = N10+1
  998. GOTO List_Loop
  999. List_End:
  1000. FCLOSEI
  1001. GOTO Mail_Prompt
  1002. Read_Msg:
  1003. FOPENI "BBS-Mail"  TEXT
  1004. IF NOT SUCCESS
  1005. TRAN "^MNo mail exists - why not write something?^M"
  1006. GOTO Mail_Prompt
  1007. ENDIF
  1008. Read_Loop:
  1009. READ S9 80 N19
  1010. IF EOF
  1011. GOTO Read_End
  1012. ENDIF
  1013. S0 = S9(0:7)
  1014. SWITCH S0
  1015. CASE S1
  1016. SET FLAG(9) ON
  1017. ENDCASE
  1018. DEFAULT
  1019. SET FLAG(9) OFF
  1020. IF FIND S9(16:16) "P"
  1021. IF STRCMP S9(8:15) S1
  1022. SET FLAG(9) ON
  1023. ELSE
  1024. GOTO Read_Loop
  1025. ENDIF
  1026. ENDIF
  1027. ENDCASE
  1028. ENDSWITCH
  1029. S0 = S9(25:37)
  1030. ISFILE S0
  1031. IF FAILURE
  1032. GOTO Read_Loop
  1033. ENDIF
  1034. S8 = S1
  1035. SWITCH S8
  1036. CASE S9(8:15)
  1037. SET FLAG(9) ON
  1038. ENDCASE
  1039. ENDSWITCH
  1040. S8 = S0
  1041. S9 = "^MError opening mailfile"
  1042. GOSUB Disp_File
  1043. IF FLAG(9)
  1044. TRAN "^M^MDelete? (Y/N):  ^H"
  1045. GOSUB Read_Comm
  1046. IF FLAG(0)
  1047. GOTO Exit
  1048. ENDIF
  1049. IF FIND S9 "Y"
  1050. DELETE S8
  1051. TRAN "Message deleted^M^J"
  1052. ENDIF
  1053. ENDIF
  1054. TRAN "^M^MContinue (CR/Y/N):  ^H"
  1055. GOSUB Read_Comm
  1056. IF FLAG(0)
  1057. GOTO Exit
  1058. ENDIF
  1059. IF NOT FIND S9 "N"
  1060. GOTO Read_Loop
  1061. ENDIF
  1062. Read_End:
  1063. FCLOSEI
  1064. GOTO Mail_Prompt
  1065. Write_Msg:
  1066. TRAN "To:  ^H"
  1067. GOSUB Read_Comm
  1068. IF FLAG(0)
  1069. GOTO Exit
  1070. ENDIF
  1071. GOSUB Left_Justify
  1072. IF NULL S9
  1073. GOTO Mail_Prompt
  1074. ENDIF
  1075. S10 = S9(0:7)
  1076. UPPER S10
  1077. TRAN "Subject:  ^H"
  1078. GOSUB Read_Comm
  1079. IF FLAG(0)
  1080. GOTO Exit
  1081. ENDIF
  1082. S11 = S9
  1083. FOPENO "\HOSTTEMP.TXT" TEXT
  1084. IF NOT SUCCESS
  1085. TRAN "Error opening file - please try later^M^J"
  1086. GOTO Mail_Prompt
  1087. ENDIF
  1088. S9 = "To:    "
  1089. CONCAT S9(7) S10
  1090. WRITE S9
  1091. WRITE "!"
  1092. S9 = "From: "
  1093. CONCAT S9(7) S1
  1094. WRITE S9
  1095. WRITE "!"
  1096. S9 = "Date: "
  1097. DATE S12
  1098. CONCAT S9(7) S12
  1099. TIME S8 1
  1100. CONCAT S9(17) S8
  1101. WRITE S9
  1102. WRITE "!"
  1103. S9 = "Subject: "
  1104. CONCAT S9(9)  S11
  1105. LENGTH S9 N19
  1106. WRITE S9 N19
  1107. WRITE "!"
  1108. WRITE "!"
  1109.         TRAN "Each line, as you enter it will be recorded.  No edits, yet...^M^J"
  1110. TRAN "Enter a line/line(s) of text.  A blank line ends the text.^M^J"
  1111. GOSUB Copy_Text
  1112. FCLOSEO
  1113. IF FLAG(0)
  1114. GOTO Exit
  1115. ENDIF
  1116. TRAN "Save? (Y/N):  ^H"
  1117. GOSUB Read_Comm
  1118. IF FLAG(0)
  1119. GOTO Exit
  1120. ENDIF
  1121. IF NOT FIND S9 "Y"
  1122. GOTO Mail_Prompt
  1123. ENDIF
  1124. TRAN "^MScanning for free slot"
  1125. N10 = 0
  1126. S0 = S10(0:7)
  1127. FOPENI "BBS-Mail"  TEXT
  1128. IF NOT SUCCESS
  1129. GOTO Write_End
  1130. ENDIF
  1131. Write_Loop:
  1132. READ S9 80 N19
  1133. IF EOF
  1134. GOTO Write_End
  1135. ENDIF
  1136. SWITCH S0
  1137. CASE S9(0:7)
  1138. FIND S9(25:37) "." N11
  1139. N11 = N11+26
  1140. ATOI S9(N11:79) N10
  1141. ENDCASE
  1142. ENDSWITCH
  1143. GOTO Write_Loop
  1144. Write_End:
  1145. FCLOSEI
  1146. TRAN "^M^JPrivate? (Y/N): "
  1147. GOSUB Read_Comm
  1148. IF FLAG(0)
  1149. GOTO Exit
  1150. ENDIF
  1151. S13 = " "
  1152. IF FIND S9 "Y"
  1153. S13 = "P"
  1154. ENDIF
  1155. N10 = N10+1
  1156. S0 = S0&"."&N10
  1157. S9 = "COPY \HOSTTEMP.TXT " * S0
  1158. DOS S9
  1159. FOPENO "BBS-Mail" TEXT APPEND
  1160. WRITE S10 8
  1161. WRITE S1  8
  1162. WRITE S13 1
  1163. WRITE S12 8
  1164. WRITE S0  13
  1165. WRITE S11 50
  1166. WRITE "!"
  1167. FCLOSEO
  1168. GOTO Mail_Prompt
  1169. Register:
  1170. MESS "^M^JRegistration requested "
  1171. S9 = "Do you wish to register? "
  1172. S8 = "BBS-ReMe"
  1173. GOSUB Disp_File
  1174. GOSUB Read_Comm
  1175. IF FLAG(0)
  1176. RETURN
  1177. ENDIF
  1178. FIND S9 "Y"
  1179. IF NOT FOUND
  1180. TRAN "OK - bye"
  1181. RETURN
  1182. ENDIF
  1183. TRAN "Enter your full name: "
  1184. GOSUB Read_Comm
  1185. IF FLAG(0)
  1186. RETURN
  1187. ENDIF
  1188. S18 = S9
  1189. TRAN "Enter your street address: "
  1190. GOSUB Read_Comm
  1191. IF FLAG(0)
  1192. RETURN
  1193. ENDIF
  1194. S17 = S9
  1195. TRAN "Enter your city/state and zip: "
  1196. GOSUB Read_Comm
  1197. IF FLAG(0)
  1198. RETURN
  1199. ENDIF
  1200. S16 = S9
  1201. TRAN "Enter a area code and phone number where^M^J"
  1202. TRAN "you may be reached:  "
  1203. GOSUB Read_Comm
  1204. IF FLAG(0)
  1205. RETURN
  1206. ENDIF
  1207. S15 = S9
  1208. Reg_ID:
  1209. TRAN "Enter the ID (1-8 chars) you wish to use: "
  1210. GOSUB Read_Comm
  1211. IF FLAG(0)
  1212. RETURN
  1213. ENDIF
  1214. IF FIND S9(0:7) "."
  1215. TRAN "ID may not contain '.'s^M^J"
  1216. GOTO Reg_ID
  1217. ENDIF
  1218. IF FIND S9(0:7) ","
  1219. TRAN "ID may not contain ','s^M^J"
  1220. GOTO Reg_ID
  1221. ENDIF
  1222. IF FIND S9(0:7) "\"
  1223. TRAN "ID may not contain '\'s^M^J"
  1224. GOTO Reg_ID
  1225. ENDIF
  1226. IF FIND S9(0:7) "/"
  1227. TRAN "ID may not contain '/'s^M^J"
  1228. GOTO Reg_ID
  1229. ENDIF
  1230. S14 = S9(0:7)
  1231. Reg_Pass:
  1232. TRAN "Enter the password (1-8 chars) you wish to use: "
  1233. GOSUB Read_Comm
  1234. IF FLAG(0)
  1235. RETURN
  1236. ENDIF
  1237. IF NULL S9(0:7)
  1238. TRAN "You must have a password^M^J"
  1239. GOTO Reg_Pass
  1240. ENDIF
  1241. S14 = S14 & ";" &S9(0:7)
  1242. TRAN "^M^JRepeating your entry...^M^J"
  1243. TRAN S18
  1244. TRAN "^M^J"
  1245. TRAN S17
  1246. TRAN "^M^J"
  1247. TRAN S16
  1248. TRAN "^M^J"
  1249. TRAN S15
  1250. TRAN "^M^J"
  1251. TRAN S14
  1252. TRAN "^M^JIs this correct? "
  1253. GOSUB Read_Comm
  1254. IF FLAG(0)
  1255. RETURN
  1256. ENDIF
  1257. FIND S9 "Y"
  1258. IF NOT FOUND
  1259. GOTO Register
  1260. ENDIF
  1261. FOPENO "BBS-Note" TEXT APPEND
  1262. IF NOT SUCCESS
  1263. TRAN "Error recording registration - please call back^M^J"
  1264. RETURN
  1265. ENDIF
  1266. S9 = "*** Registration requested: "
  1267. DATE S1
  1268. CONCAT S9(27) S1
  1269. TIME S1 1
  1270. CONCAT S9(38) S1
  1271. WRITE S9
  1272. WRITE "!"
  1273. WRITE S18 80
  1274. WRITE "!"
  1275. WRITE S17 80
  1276. WRITE "!"
  1277. WRITE S16 80
  1278. WRITE "!"
  1279. WRITE S15 80
  1280. WRITE "!"
  1281. WRITE S14 80
  1282. WRITE "!"
  1283. TRAN "Your request will be processed by the SYSOP^M^J"
  1284. TRAN "Thanks for calling...^M^J"
  1285. FCLOSEO
  1286. RETURN
  1287. AutoBaud:
  1288. FIND S9 "1200"
  1289. IF FOUND
  1290. SET BAUD 1200
  1291. RETURN
  1292. ENDIF
  1293. FIND S9 "2400"
  1294. IF FOUND
  1295. SET BAUD 2400
  1296. RETURN
  1297. ENDIF
  1298. SET BAUD 300
  1299. RETURN
  1300.